package dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import bean.ItemCotizacion;

import util.HibernateUtil;

public class ItemCotizacionDAO 
{	
	private static ItemCotizacionDAO instancia = null;
	private static SessionFactory sf = null;

	public static ItemCotizacionDAO getInstancia()
	{
		if(instancia == null)
		{
			sf = HibernateUtil.getSessionFactory();
			instancia = new ItemCotizacionDAO();
		} 
		return instancia;
	}
	
	@SuppressWarnings("unchecked")
	public List<ItemCotizacion> obtenerItemsPorMarcaYOrigen( ItemCotizacion it, String marca, String origen )
	{		
		Session session = sf.openSession();
		Query query = session.createQuery(	"SELECT item.rodamiento " +  
											"FROM ItemCotizacionBean item JOIN item.rodamiento rod "  + 
											"WHERE rod.marca = :marca AND rod.origen = :origen" )
											.setString("marca", it.getRodamiento().getMarca())
											.setString("origen", it.getRodamiento().getOrigen());
		List<ItemCotizacion> listaItems = query.list();
		
		return listaItems;
	}

	public boolean haySuficienteStock( ItemCotizacion i ) 
	{
		Session session = sf.openSession();
		
		Query query = session.createQuery(	"SELECT rod.cantStock item.rodamiento " +  
										    "FROM ItemBean item JOIN item.rodamiento rod ");
											//"WHERE rod.cantStock >= :cantidad" )
											//.setInt( "cantidad", i.getCantidad());		
		int cantidadEnStock = (Integer) query.uniqueResult();		
		boolean hayStock = false;
		
		if( cantidadEnStock >= i.getCantidad() )
		{
			hayStock = true;
		}
		
		return hayStock ;
	}

	public void modificarItem(ItemCotizacion i) 
	{
		Session session = sf.openSession();
		session.beginTransaction();
		
		session.update(i);
		
		session.flush();
		session.getTransaction().commit();
		session.close();
	}

}
